package com.grupoconstruobras.sigo.security.auth.data;

import com.grupoconstruobras.sigo.security.audit.AuditorEntityListener;
import com.grupoconstruobras.sigo.security.audit.data.catalogue.BaseCatalogueAuditEntity;

import java.io.Serializable;
import java.util.List;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;


/**
 * The persistent class for the recurso database table.
 * 
 */
@EntityListeners(AuditorEntityListener.class)
@Entity
@Table(name = "recurso", schema = "seguridad")
@AttributeOverrides({ @AttributeOverride(name = "id", column = @Column(name = "idrecurso")) })
@SequenceGenerator(name = "simple_identifier", schema = "seguridad", sequenceName = "recurso_idrecurso_seq", initialValue = 1, allocationSize = 1)
public class Recurso extends BaseCatalogueAuditEntity<Long, Recurso> implements Serializable {
	private static final long serialVersionUID = 1L;

	
	//bi-directional many-to-one association to Relacionrolrecurso
	@OneToMany(mappedBy="recurso")
	private List<Relacionrolrecurso> relacionrolrecursos;

	//bi-directional many-to-one association to Relacionrolrecursofuncionalidad
	@OneToMany(mappedBy="recurso")
	private List<Relacionrolrecursofuncionalidad> relacionrolrecursofuncionalidads;

	//bi-directional many-to-one association to Relacionvistarecurso
	@OneToMany(mappedBy="recurso")
	private List<Relacionvistarecurso> relacionvistarecursos;

	public Recurso() {
	}
	
	public Recurso(Long id) {
		this.id = id;
	}

	
	public List<Relacionrolrecurso> getRelacionrolrecursos() {
		return this.relacionrolrecursos;
	}

	public void setRelacionrolrecursos(List<Relacionrolrecurso> relacionrolrecursos) {
		this.relacionrolrecursos = relacionrolrecursos;
	}

	public Relacionrolrecurso addRelacionrolrecurso(Relacionrolrecurso relacionrolrecurso) {
		getRelacionrolrecursos().add(relacionrolrecurso);
		relacionrolrecurso.setRecurso(this);

		return relacionrolrecurso;
	}

	public Relacionrolrecurso removeRelacionrolrecurso(Relacionrolrecurso relacionrolrecurso) {
		getRelacionrolrecursos().remove(relacionrolrecurso);
		relacionrolrecurso.setRecurso(null);

		return relacionrolrecurso;
	}

	public List<Relacionrolrecursofuncionalidad> getRelacionrolrecursofuncionalidads() {
		return this.relacionrolrecursofuncionalidads;
	}

	public void setRelacionrolrecursofuncionalidads(List<Relacionrolrecursofuncionalidad> relacionrolrecursofuncionalidads) {
		this.relacionrolrecursofuncionalidads = relacionrolrecursofuncionalidads;
	}

	public Relacionrolrecursofuncionalidad addRelacionrolrecursofuncionalidad(Relacionrolrecursofuncionalidad relacionrolrecursofuncionalidad) {
		getRelacionrolrecursofuncionalidads().add(relacionrolrecursofuncionalidad);
		relacionrolrecursofuncionalidad.setRecurso(this);

		return relacionrolrecursofuncionalidad;
	}

	public Relacionrolrecursofuncionalidad removeRelacionrolrecursofuncionalidad(Relacionrolrecursofuncionalidad relacionrolrecursofuncionalidad) {
		getRelacionrolrecursofuncionalidads().remove(relacionrolrecursofuncionalidad);
		relacionrolrecursofuncionalidad.setRecurso(null);

		return relacionrolrecursofuncionalidad;
	}

	public List<Relacionvistarecurso> getRelacionvistarecursos() {
		return this.relacionvistarecursos;
	}

	public void setRelacionvistarecursos(List<Relacionvistarecurso> relacionvistarecursos) {
		this.relacionvistarecursos = relacionvistarecursos;
	}

	public Relacionvistarecurso addRelacionvistarecurso(Relacionvistarecurso relacionvistarecurso) {
		getRelacionvistarecursos().add(relacionvistarecurso);
		relacionvistarecurso.setRecurso(this);

		return relacionvistarecurso;
	}

	public Relacionvistarecurso removeRelacionvistarecurso(Relacionvistarecurso relacionvistarecurso) {
		getRelacionvistarecursos().remove(relacionvistarecurso);
		relacionvistarecurso.setRecurso(null);

		return relacionvistarecurso;
	}

}